情形一、SP1全量安装，升级到SP2，重启，回滚，重启，卸载，重启
【SP1安装】
1、下载SP1官方标准镜像到蓝云机器，然后使用物理机挂载镜像进行安装（操作步骤见左侧）。
2、上传SP1 everything镜像到安装好的物理机上，并进行挂载。注意区分架构。
	mount openEuler-20.03-LTS-SP1-everything-x86_64-dvd.iso SP1_everything/
3、配置SP1_everything的源：
	[SP1_everything]
	name=SP1_everything
	baseurl=file:///home/SP1_everything
	enabled=1
	gpgcheck=0
4、执行以下脚本全量安装SP1 everything源中所有的包。遇到冲突，单独分析、安装（注意忽略已知问题）
	dnf list --available |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' >install_list
	dnf install $(cat install_list) |tee install_log
	#dnf install $(cat install_list) --allowerasing --skip-broken -x abrt-atomic -x podman-docker -x libcmpiCppImpl0 -x libev-libevent-devel -x mysql5* -x python3-abrt-container-addon -x python3-pycryptodome -x python3-edk2-devel -x podman-help |tee install_log
	-x参数后边跟冲突包的其中一个，--skip-broken 和 -x 配套使用（即使用-x也需要使用--skip-broken）

【升级SP1—>SP2、重启】
5、上传SP2 everything镜像到安装好的物理机上，并进行挂载。注意区分架构。
	mount openEuler-20.03-LTS-SP2-everything-x86_64-dvd.iso SP2_everything/
6、配置SP2 everything的源：
	[SP2_everything]
	name=SP2_everything
	baseurl=file:///home/SP2_everything
	enabled=1
	gpgcheck=0
7、执行yum update 进行全量升级。遇到冲突，单独分析、升级（注意忽略已知问题）
	dnf update | tee update_log
	#dnf update --allowerasing --skip-broken -x containerd -x docker-engine -x libnetwork -y |tee update_log
8、升级完成，重启物理机。
	注意：
	①将物理机的/etc/ssh/sshd_config文件配置项（密码授权）PasswordAuthentication no改为yes，并重启sshd服务：systemctl restart sshd
	②机器重启后，yum源需要重新挂载。

【回退SP2—>SP1、重启】
9、执行以下脚本进行降级。遇到冲突，单独分析、降级（注意忽略已知问题）
	dnf list --installed |grep "@SP2_everything" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > downgrade_list
	dnf downgrade $(cat downgrade_list) |tee downgrade_log
	#dnf downgrade $(cat downgrade_list) --allowerasing --skip-broken -x python3-pycryptodome -y |tee downgrade_log
10、降级完成，重启物理机。要重新挂载yum源（SP1和SP2源）。

【卸载、重启】
11、执行以下脚本卸载everything中全量的包：
	dnf list --installed |grep "@SP1_everything\|@SP2_everything" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > everything_install_list
	方法①：
	dnf remove -y $(cat everything_install_list) |tee remove_log
	方法②：
	dnf list --installed |grep "@anaconda" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > anaconda_list
	vi get_removeList.sh
	while read -r pkg; do
	    cat anaconda_list | grep "^${pkg}$" || echo "${pkg}" >> removeList
	done < everything_install_list
	
	vi delete_removeList.sh
	while read -r pkg; do
	    dnf remove -y ${pkg}
	done < removeList
	chmod +x get_removeList.sh delete_removeList.sh
	./get_removeList.sh 
	bash -x delete_removeList.sh | tee remove_log
12、重启物理机。


×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
情形二：SP1全量安装，升级到update中间某个版本，再升级到SP2，重启，回滚，重启，卸载，重启
【SP1安装】
1、下载SP1官方标准镜像到蓝云机器，然后使用物理机挂载镜像进行安装（操作步骤见左侧）。
2、上传SP1 everything镜像到安装好的物理机上，并进行挂载。注意区分架构。
	mount openEuler-20.03-LTS-SP1-everything-x86_64-dvd.iso SP1_everything/
3、配置SP1_everything的源：
	[SP1_everything]
	name=SP1_everything
	baseurl=file:///home/SP1_everything
	enabled=1
	gpgcheck=0
4、执行以下脚本全量安装SP1 everything源中所有的包。遇到冲突，单独分析、安装（注意忽略已知问题）
	dnf list --available |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' >install_list
	dnf install $(cat install_list) |tee install_log
	#dnf install $(cat install_list) --allowerasing --skip-broken -x python3-edk2-devel -x podman-help -y |tee install_log
	-x参数后边跟冲突包的其中一个，--skip-broken 和 -x 配套使用（即使用-x也需要使用--skip-broken）	

【升级1：SP1—>SP1_update】
5、配置update源：
	http://repo.openeuler.org/openEuler-20.03-LTS-SP1/update/$basearch/
6、配置update中间某个版本的源：
	http://121.36.84.172/repo.openeuler.org/openEuler-20.03-LTS-SP1/update_20210223/$basearch/
7、升级1：SP1—>SP1_update。遇到冲突，单独分析、升级（注意忽略已知问题）
	yum update 
	#yum update --allowerasing --skip-broken --nobest -x containerd -x docker-engine -x scons-help -x python2-scons -x python3-scons -y |tee update_log1

【升级2：SP1_update—>SP2、重启】
8、上传SP2 everything镜像到安装好的物理机上，并进行挂载。注意区分架构。
	mount openEuler-20.03-LTS-SP2-everything-x86_64-dvd.iso SP2_everything/
9、配置SP2 everything的源：
	[SP2_everything]
	name=SP2_everything
	baseurl=file:///home/SP2_everything
	enabled=1
	gpgcheck=0
10、执行yum update 进行全量升级。遇到冲突，单独分析、升级（注意忽略已知问题）
	dnf update | tee update_log
	#dnf update --allowerasing --skip-broken --nobest -x containerd -x docker-engine -x libnetwork -y |tee update_log2
11、升级完成，重启物理机。
	注意：
	①将物理机的/etc/ssh/sshd_config文件配置项（密码授权）PasswordAuthentication no改为yes，并重启sshd服务：systemctl restart sshd
	②机器重启后，yum源需要重新挂载。

【回退、重启】
12、执行以下脚本进行降级（SP2—>SP1_update）。遇到冲突，单独分析、降级（注意忽略已知问题）
	dnf list --installed |grep "@SP2_everything" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > downgrade_list
	dnf downgrade $(cat downgrade_list) |tee downgrade_log
	#dnf downgrade $(cat downgrade_list) --allowerasing --skip-broken -y |tee downgrade_log
13、降级完成，重启物理机。要重新挂载yum源（LTS和SP2源）。

【卸载、重启】
14、卸载everything中全量的包。
	dnf list --installed |grep "@SP1_everything\|@SP2_everything\|@update\|@update_20210223" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > everything_install_list
	方法①：
	dnf remove -y $(cat everything_install_list) |tee remove_log
	方法②：
	dnf list --installed |grep "@anaconda" |grep "arch\|x86_64" |awk '{print $1}' |awk -F. 'OFS="."{$NF="";print}' |awk '{print substr($0, 1, length($0)-1)}' > anaconda_list
	vi get_removeList.sh
	while read -r pkg; do
	    cat anaconda_list | grep "^${pkg}$" || echo "${pkg}" >> removeList
	done < everything_install_list
	
	vi delete_removeList.sh
	while read -r pkg; do
	    dnf remove -y ${pkg}
	done < removeList
	chmod +x get_removeList.sh delete_removeList.sh
	./get_removeList.sh 
	bash -x delete_removeList.sh | tee remove_log
15、重启物理机。

